<?php
header('content-type:application/json;charset=utf8');

require_once 'cls_json.php';

class YrqHelper {
	
	/**
	 * 获取post或get参数（优先获取post提交的数据）
	 * @author	renquan
	 * @param 	string $key		参数标识
	 * @param 	multi $default	默认值
	 */
	public static function getParam($key = null, $default = array()) {
		$key	= trim($key);
		if ($key) {
			$get	= isset($_GET[$key]) ? $_GET[$key] : $default;
			$post	= isset($_POST[$key]) ? $_POST[$key] : $default;
			$result	= $get ? $get : $post;	// 优先获取post提交的数据
		}else {
			$get	= $_GET	? $_GET	: $default;
			$post	= $_POST ? $_POST : $default;
			$get	= $get ? $get : array();
			$post	= $post ? $post : array();
			$result	= array_merge($get, $post);	// 优先获取post提交的数据
		}
		
		return $result;
	}
	
	/**
	 * 返回统一格式的json串数据
	 * @param string $flag		根据不同的业务场景给这个参数传值
	 * @param string $msg		返回对应的提示信息
	 * @param string | array | object $data		要返回的数据
	 * @return	json 			输出统一的数组json串
	 */
	public static function jsonCallback($flag, $msg = '', $data = array()) {
		// 是否是跨域请求，当有callback参数且不为空时表示跨域请求。
		$callback	= isset($_GET['callback']) ? trim($_GET['callback']) : '';
	
		// 整合要返回的数据
		$return 	= array('flag'=>$flag, 'msg'=>$msg, 'data'=>$data);
		
		$json = new JSON;
		if ($callback) {
			die( $callback. '('.json_encode( $return ). ');' );
		} else {
			/*file_put_contents('json_log.txt', date("Y-m-d H:i:s",time()),FILE_APPEND);
			file_put_contents('json_log.txt', json_encode($return),FILE_APPEND);*/

			die( json_encode( $return ) );
		}
	}
	/**
	 * 数据字符转义
	 * @param multitype $data	要转义的数据
	 * @return multitype:
	 */
	public static function htmlencode($data){
	
		if (is_array($data)) {
			return array_map('YrqHelper::htmlencode', $data);
		}elseif (is_object($data)) {
			return array_map('YrqHelper::htmlencode', (array)$data);
		}else {
			return htmlspecialchars($data, ENT_QUOTES, 'utf-8');;
		}
	}	/**
	 * 设置默认值方法
	 * @author	yrq
	 * @param 	mult $data
	 * @param 	string $key
	 * @param 	string $default
	 * @return	multitype
	 */
	public static function def($data, $key, $default=null){
		if (isset($data)){
			if (is_object($data) && isset($data->$key)){
				return (!$data->$key && $default!==null)? $default:$data->$key;
			}
			if (is_array($data) && isset($data[$key])){
				return (!$data[$key] && $default!==null)? $default:$data[$key];
			}
			if (is_bool($data) || is_string($data) || is_int($data)){
				return (!$data && $default!==null)? $default:$data;
			}
			return $default;
		}else {
			return $default;
		}		
	}
}